package androids.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import androids.excepcion.DAOExcepcion;
import androids.modelo.Proveedor;
import androids.util.ConexionBD;

public class ProveedorDAO extends BaseDAO {

//	public Collection<Rol> buscarPorNombre(String nombre) throws DAOExcepcion {
//		System.out.println("RolDAO: buscarPorNombre(String nombre)");
//		String query = "SELECT rol_nombre, descripcion FROM rol WHERE rol_nombre like ?";
//		Collection<Rol> lista = new ArrayList<Rol>();
//		Connection con = null;
//		PreparedStatement stmt = null;
//		ResultSet rs = null;
//		try {
//			con = ConexionBD.obtenerConexion();
//			stmt = con.prepareStatement(query);
//			stmt.setString(1, "%" + nombre + "%");
//			rs = stmt.executeQuery();
//			while (rs.next()) {
//				Rol vo = new Rol();
//				vo.setRolNombre(rs.getString("rol_nombre"));
//				vo.setDescripcion(rs.getString("descripcion"));
//				lista.add(vo);
//			}
//		} catch (SQLException e) {
//			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
//		} finally {
//			this.cerrarResultSet(rs);
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
//		}
//		return lista;
//	}
	public void insertar(Proveedor vo) throws DAOExcepcion {
		System.out.println("ProveedorDAO: insertar(Proveedor vo)");
		String query = "INSERT INTO proveedor(id_proveedor, nombre, direccion_proveedor, pais_origen) VALUES (?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, vo.getIdProveedor());
			stmt.setString(2, vo.getNombre());
			stmt.setString(3, vo.getDireccionProveedor());
			stmt.setString(4, vo.getPais());
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar el proveedor");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}

//	public Rol obtener(String rolNombre) throws DAOExcepcion {
//		System.out.println("RolDAO: obtener(String rolNombre)");
//		Rol vo = new Rol();
//		Connection con = null;
//		PreparedStatement stmt = null;
//		ResultSet rs = null;
//		try {
//			String query = "select rol_nombre, descripcion from rol where rol_nombre=?";
//			con = ConexionBD.obtenerConexion();
//			stmt = con.prepareStatement(query);
//			stmt.setString(1, rolNombre);
//			rs = stmt.executeQuery();
//			if (rs.next()) {
//				vo.setRolNombre(rs.getString(1));
//				vo.setDescripcion(rs.getString(2));
//			}
//		} catch (SQLException e) {
//			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
//		} finally {
//			this.cerrarResultSet(rs);
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
//		}
//		return vo;
//	}

	public void eliminar(Integer idProveedor) throws DAOExcepcion {
		System.out.println("ProveedorDAO: eliminar(String idProveedor)");
		String query = "DELETE FROM proveedor WHERE id_proveedor=?";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, idProveedor);
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo eliminar el proveedor");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
//
	public void actualizar(Proveedor vo) throws DAOExcepcion {
		System.out.println("ProveedorDAO: actualizar(Proveedor vo)");
		String query = "update proveedor set nombre=?, direccion_proveedor=?, pais_origen=? where id_proveedor=?";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, vo.getNombre());
			stmt.setString(2, vo.getDireccionProveedor());
			stmt.setString(3, vo.getPais());
			stmt.setInt(4, vo.getIdProveedor());
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar el proveedor");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
//	public Collection<Rol> listar() throws DAOExcepcion {
//		System.out.println("RolDAO: listar()");
//		Collection<Rol> c = new ArrayList<Rol>();
//		Connection con = null;
//		PreparedStatement stmt = null;
//		ResultSet rs = null;
//		try {
//			con = ConexionBD.obtenerConexion();
//			String query = "SELECT rol_nombre,descripcion from rol";
//			stmt = con.prepareStatement(query);
//			rs = stmt.executeQuery();
//			while (rs.next()) {
//				Rol vo = new Rol();
//				vo.setRolNombre(rs.getString("rol_nombre"));
//				vo.setDescripcion(rs.getString("descripcion"));
//				c.add(vo);
//			}
//		} catch (SQLException e) {
//			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
//		} finally {
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
//		}
//		return c;
//	}

}